//
//  KATStandardTableFooter.h
//  KATFramework
//
//  Created by Kantice on 16/7/19.
//  Copyright © 2016年 KatApp. All rights reserved.
//  标准列表底

#import "KATTableFooter.h"
#import "KATToast.h"
#import "KATShapeUtil.h"


#define ST_FOOTER_ANIM_ROTATE 1
#define ST_FOOTER_ANIM_SCALE_X 10
#define ST_FOOTER_ANIM_SCALE_Y 100
#define ST_FOOTER_ANIM_STROKE_START 1000
#define ST_FOOTER_ANIM_STROKE_END 10000
#define ST_FOOTER_ANIM_ALPHA 100000


@interface KATStandardTableFooter : KATTableFooter <KATTableFooterStateDelegate>


#pragma -mark 属性

///标题
@property(nonatomic,retain) UILabel *title;

///是否包含标题
@property(nonatomic,assign) BOOL hasTite;

///是否包含下拉指示器
@property(nonatomic,assign) BOOL hasPushingIndicator;

///是否包含加载指示器
@property(nonatomic,assign) BOOL hasLoadingIndicator;

///指示器类型(下拉过程中)
@property(nonatomic,assign) int indicatorTypePushing;

///指示器类型(加载过程中)
@property(nonatomic,assign) int indicatorTypeLoading;

///指示器(下拉过程中)
@property(nonatomic,retain) KATShape *indicatorPushing;

///指示器(加载过程中)
@property(nonatomic,retain) KATShape *indicatorLoading;

///下拉信息
@property(nonatomic,copy) NSString *infoPushing;

///松开信息
@property(nonatomic,copy) NSString *infoRelease;

///加载信息
@property(nonatomic,copy) NSString *infoLoading;

///提示信息
@property(nonatomic,retain) KATToast *tips;

///下拉动画类型(动画类型可叠加,缩放与旋转有冲突)
@property(nonatomic,assign) int animationPushing;

///加载动画类型(动画类型可叠加,缩放与旋转有冲突)
@property(nonatomic,assign) int animationLoading;

///下拉动画执行时间(下拉到底触发的动画)
@property(nonatomic,assign) double animationPushingDuration;

///加载动画完成一次周期的时间
@property(nonatomic,assign) double animationLoadingDuration;

///下拉动画旋转初始值(旋转角度1.0为2PI)
@property(nonatomic,assign) float animationPushingRotateStartValue;

///下拉动画旋转结束值(旋转角度1.0为2PI)
@property(nonatomic,assign) float animationPushingRotateEndValue;

///下拉动画X轴缩放初始值
@property(nonatomic,assign) float animationPushingScaleXStartValue;

///下拉动画X轴缩放结束值
@property(nonatomic,assign) float animationPushingScaleXEndValue;

///下拉动画Y轴缩放初始值
@property(nonatomic,assign) float animationPushingScaleYStartValue;

///下拉动画Y轴缩放结束值
@property(nonatomic,assign) float animationPushingScaleYEndValue;

///下拉动画开始路径初始值
@property(nonatomic,assign) float animationPushingStrokeStartStartValue;

///下拉动画开始路径结束值
@property(nonatomic,assign) float animationPushingStrokeStartEndValue;

///下拉动画结束路径初始值
@property(nonatomic,assign) float animationPushingStrokeEndStartValue;

///下拉动画结束路径结束值
@property(nonatomic,assign) float animationPushingStrokeEndEndValue;

///下拉动画透明度初始值
@property(nonatomic,assign) float animationPushingAlphaStartValue;

///下拉动画透明度结束值
@property(nonatomic,assign) float animationPushingAlphaEndValue;

///加载动画旋转初始值(旋转角度1.0为2PI)
@property(nonatomic,assign) float animationLoadingRotateStartValue;

///加载动画旋转结束值(旋转角度1.0为2PI)
@property(nonatomic,assign) float animationLoadingRotateEndValue;

///加载动画X轴缩放初始值
@property(nonatomic,assign) float animationLoadingScaleXStartValue;

///加载动画X轴缩放结束值
@property(nonatomic,assign) float animationLoadingScaleXEndValue;

///加载动画Y轴缩放初始值
@property(nonatomic,assign) float animationLoadingScaleYStartValue;

///加载动画Y轴缩放结束值
@property(nonatomic,assign) float animationLoadingScaleYEndValue;

///加载动画开始路径初始值
@property(nonatomic,assign) float animationLoadingStrokeStartStartValue;

///加载动画开始路径结束值
@property(nonatomic,assign) float animationLoadingStrokeStartEndValue;

///加载动画结束路径初始值
@property(nonatomic,assign) float animationLoadingStrokeEndStartValue;

///加载动画结束路径结束值
@property(nonatomic,assign) float animationLoadingStrokeEndEndValue;

///加载动画透明度初始值
@property(nonatomic,assign) float animationLoadingAlphaStartValue;

///加载动画透明度结束值
@property(nonatomic,assign) float animationLoadingAlphaEndValue;

///下拉到底触发动画
@property(nonatomic,assign) BOOL isAnimationPushingActAtRelease;

///加载动画是否自动反转
@property(nonatomic,assign) BOOL isAnimationLoadingAutoReverse;


#pragma -mark 类方法

///获取实例
+ (instancetype)tableFooterWithHeight:(float)height andScrollView:(UIScrollView *)scrollView;


#pragma -mark 对象方法

///初始化
- (void)initFooter;

///加载完成
- (void)finishLoadWithMessage:(NSString *)message;


///释放内存
- (void)dealloc;



@end


